import java.util.*;

public class Datum {
	private int dag, maand, jaar;
	private GregorianCalendar cal = new GregorianCalendar(); 
	
	//Constructor
	
	/**
	 * Constructor van de klasse Datum.
	 * Hier wordt ook gekeken de ingevoerde datum ook bestaat, is dit niet het geval dan worden dag, maand en jaar naar 0 gezet.
	 */
	public Datum( int dag, int maand, int jaar ) {
		
		switch( maand ) {
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			if( dag >= 1 && dag <= 31 && jaar >= 1900 && jaar <= 2100 ) {
				this.dag = dag;
				this.maand = maand;
				this.jaar = jaar;
			} else {
				this.dag = 0;
				this.maand = 0;
				this.jaar = 0;
			}
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			if( dag >= 1 && dag <= 30 && jaar >= 1900 && jaar <= 2100 ) {
				this.dag = dag;
				this.maand = maand;
				this.jaar = jaar;
			} else {
				this.dag = 0;
				this.maand = 0;
				this.jaar = 0;
			}
			break;
		case 2:
			if(cal.isLeapYear(jaar)) {
				if( dag >= 1 && dag <= 29 && jaar >= 1900 && jaar <= 2100 ) {
					this.dag = dag;
					this.maand = maand;
					this.jaar = jaar;
				} else {
					this.dag = 0;
					this.maand = 0;
					this.jaar = 0;
				}
			} else {
				if( dag >= 1 && dag <= 28 && jaar >= 1900 && jaar <= 2100 ) {
					this.dag = dag;
					this.maand = maand;
					this.jaar = jaar;
				} else {
					this.dag = 0;
					this.maand = 0;
					this.jaar = 0;
				}
			}
			break;
		}
		
		
		
	}
	
	//Setters
	
	/**
	 * Set de variable dag.
	 * Als deze waarde onder de 1 ligt dan worden de waardes dag, maand en jaar naar 0 gezet.
	 */
	public void setDag( int dag ) {
		if( dag >= 1 ) {
			this.dag = dag;
		} else {
			this.dag = 0;
			this.maand = 0;
			this.jaar = 0;
		}
	}
	
	/**
	 * Set de variable maand.
	 * Als deze waarde niet tussen de 1 en 12 ligt dan worden de waardes dag, maand en jaar naar 0 gezet
	 */
	public void setMaand( int maand ) {
		if( maand >= 1 && maand <= 12 ) {
			this.maand = maand;
		} else {
			this.dag = 0;
			this.maand = 0;
			this.jaar = 0;
		}
	}
	
	/**
	 * Set de variable jaar.
	 * Als deze waarde niet tussen de 1900 en 2100 ligt worden de waardes dag, maand en jaar naar 0 gezet.
	 */
	public void setJaar( int jaar ) {
		if( jaar >= 1900 && jaar <= 2100 ) {
			this.jaar = jaar;
		} else {
			this.dag = 0;
			this.maand = 0;
			this.jaar = 0;
		}
		
	}
	
	//Getters
	
	/**
	 * Returnd de waarde van dag.
	 * Deze waarde is een Integer.
	 */
	public int getDag() {
		return dag;
	}
	
	/**
	 * Returnd de waarde van maand.
	 * Deze waarde is een Integer.
	 */
	public int getMaand() {
		return maand;
	}
	
	/**
	 * Returnd de waarde van jaar.
	 * Deze waarde is een Integer.
	 */
	public int getJaar() {
		return jaar;
	}
	
	/**
	 * Geeft de gesette datum terug in de vorm van een String.
	 * Zijn de variable dag, maand en jaar gelijk aan 0. Dan wordt er "Onbekend" terug gestuurd.
	 */
	public String toString() {
		if( dag == 0 && maand == 0 && jaar == 0) {
			return "Onbekend";
		} else {
			return  getDag() + "-" +
					getMaand() + "-" +
					getJaar();
		}
	}


}